#include #include using namespace std; void displayFileHeader(ifstream& fin, ofstream& fout) { char bfType[3]; unsigned int bfSize; unsigned short bfReserved1; unsigned short bfReserved2; unsigned int bfOffBits; fin.read(bfType, 2); // this should read BM bfType[2] = '\0'; fin.read((char*)&bfSize,4); fin.seekg(4,ios::cur); fin.read((char*)&bfOffBits,4); fout.write(bfType, 2); // this should read BM fout.write((char*)&bfSize,4); fout.write((char*)&bfSize,4); fout.write((char*)&bfOffBits,4); } void displayInfoHeader(ifstream& fin, ofstream& fout) { unsigned int biSize; unsigned int biWidth; unsigned int biHeight; unsigned short biPlanes; unsigned short biBitCount; unsigned int biCompression; unsigned int biSizeImage; unsigned int biXPelsPerMeter; unsigned int biYPelsPerMeter; unsigned int biClrUsed; unsigned int biClrImportant; fin.read((char*)&biSize,4); fin.read((char*)&biWidth,4); fin.read((char*)&biHeight,4); fin.read((char*)&biPlanes,2); fin.read((char*)&biBitCount,2); fin.read((char*)&biCompression,4); fin.read((char*)&biSizeImage,4); fin.read((char*)&biXPelsPerMeter,4); fin.read((char*)&biYPelsPerMeter,4); fin.read((char*)&biClrUsed,4); fin.read((char*)&biClrImportant,4); fout.write((char*)&biSize,4); fout.write((char*)&biWidth,4); fout.write((char*)&biHeight,4); fout.write((char*)&biPlanes,2); fout.write((char*)&biBitCount,2); fout.write((char*)&biCompression,4); fout.write((char*)&biSizeImage,4); fout.write((char*)&biXPelsPerMeter,4); fout.write((char*)&biYPelsPerMeter,4); fout.write((char*)&biClrUsed,4); fout.write((char*)&biClrImportant,4); } void main() { //p-pointer is the put pointer for file handles of type ofstream //g-pointer is the get pointer for file handles of type ifstream ifstream fin("test.bmp",ios::binary); ofstream fout("test2.bmp",ios::binary); displayFileHeader(fin, fout); displayInfoHeader(fin,fout); //fout.seekp(54); unsigned char red = 255; unsigned char blue = 0; unsigned char green = 0; for(int row = 0; row < 108; row++) { for(int column = 0;column < 176; column++) { fout.write((char*)&blue, 1); fout.write((char*)&green, 1); fout.write((char*)&red, 1); } blue = (blue == 0)?255:0; green = (green == 0)?255:0; } fin.close(); fout.close(); } #include #include using namespace std; void main() { ofstream fout("test.dat",ios::binary); char c = 10; for( char i = 0; i < 100; i++) { fout.write((char*)&c,1); } fout.close(); }